Skip to content

Árvore de decisão

Objetivo

O dataset Customer Churn – reúne dados de clientes de uma operadora de telecom com o objetivo: prever se o cliente vai cancelar (Churn) ou permanecer.

Descrição das colunas (dicionário de dados)

customerID: ID do cliente

Gender: Gênero do cliente (feminino, masculino)

SeniorCitizen: Se o cliente é idoso ou não (1, 0)

Partner: Se o cliente tem cônjuge/parceiro (Sim, Não)

Dependents: Se o cliente possui dependentes (Sim, Não)

Tenure: Número de meses que o cliente permaneceu na empresa

PhoneService: Se o cliente possui serviço de telefonia (Sim, Não)

MultipleLines: Se o cliente possui múltiplas linhas (Sim, Não, Sem serviço de telefonia)

InternetService: Provedor de internet do cliente (DSL, Fibra óptica, Sem internet)

OnlineSecurity: Se o cliente possui segurança online (Sim, Não, Sem serviço de internet)

OnlineBackup: Se o cliente possui backup online (Sim, Não, Sem serviço de internet)

DeviceProtection: Se o cliente possui proteção de dispositivos (Sim, Não, Sem serviço de internet)

TechSupport: Se o cliente possui suporte técnico (Sim, Não, Sem serviço de internet)

StreamingTV: Se o cliente possui streaming de TV (Sim, Não, Sem serviço de internet)

StreamingMovies: Se o cliente possui streaming de filmes (Sim, Não, Sem serviço de internet)

Contract: Tipo de contrato do cliente (Mês a mês, Um ano, Dois anos)

PaperlessBilling: Se o cliente utiliza fatura digital (Sim, Não)

PaymentMethod: Método de pagamento do cliente (Cheque eletrônico, Cheque enviado, Transferência bancária — automática, Cartão de crédito — automático)

MonthlyCharges: Valor cobrado mensalmente do cliente

TotalCharges: Valor total cobrado do cliente

Churn: Se o cliente cancelou (Sim ou Não)

Pré Processamento

1) padronização de tipos

Normalização de TotalCharges para numérico

2) Tratamento de valores faltantes

Numéricos (tenure, MonthlyCharges, TotalCharges): imputação pela mediana.

Categóricos (gender, Partner, Dependents, PhoneService, MultipleLines, InternetService, OnlineSecurity, OnlineBackup, DeviceProtection, TechSupport, StreamingTV, StreamingMovies, Contract, PaperlessBilling, PaymentMethod, Churn): imputação pela moda (valor mais frequente).

Traceback (most recent call last):
  File "C:\SI04Local\MachineLearningLocal\documentation.template\env\Lib\site-packages\markdown_exec\_internal\formatters\python.py", line 71, in _run_python
    exec_python(code, code_block_id, exec_globals)
  File "C:\SI04Local\MachineLearningLocal\documentation.template\env\Lib\site-packages\markdown_exec\_internal\formatters\_exec_python.py", line 8, in exec_python
    exec(compiled, exec_globals)  # noqa: S102
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<code block: n1>", line 62, in <module>
    df = preprocess(df)
          ^^^^^^^^^^^^^^
  File "<code block: n1>", line 34, in preprocess
    label_encoder = LabelEncoder()
                     ^^^^^^^^^^^^
NameError: name 'LabelEncoder' is not defined

Divisão de dados

Os dados foram divididos em 70% para treino e 30% para validação, com o objetivo de evitar overfitting e obter uma estimativa mais fiel de desempenho.


Feature Importances:

Feature Importance
17 MonthlyCharges 0.212080
18 TotalCharges 0.208899
14 Contract 0.165401
4 tenure 0.117349
8 OnlineSecurity 0.047887
16 PaymentMethod 0.037534
0 gender 0.027470
7 InternetService 0.025912
2 Partner 0.024116
3 Dependents 0.021342
6 MultipleLines 0.020090
15 PaperlessBilling 0.017515
1 SeniorCitizen 0.017263
10 DeviceProtection 0.013111
9 OnlineBackup 0.011655
11 TechSupport 0.011479
13 StreamingMovies 0.010491
12 StreamingTV 0.007119
5 PhoneService 0.003285
Accuracy: 0.73 2025-12-05T00:00:57.827976 image/svg+xml Matplotlib v3.10.6, https://matplotlib.org/

Avaliação do modelo

O modelo teve accuracy de 74% no conjunto de validação. Para um accuracy maior é necessario análise das variáveis com maior correlação para serem utilizadas no treinamento do modelo